home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 April: Mac OS SDK / Dev.CD Apr 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Interfaces / CIncludes / DrawSprocket.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-09-11  |  9.7 KB  |  338 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        DrawSprocket.h
  3.  
  4.      Contains:    Public interfaces for DrawSprocket
  5.  
  6.      Version:    Technology:    Apple Game Sprockets 1.0
  7.                  Package:    Universal Interfaces 2.1.4
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17. */
  18.  
  19.  
  20. #ifndef __DRAWSPROCKET__
  21. #define __DRAWSPROCKET__
  22.  
  23. #ifndef __TYPES__
  24. #include <Types.h>
  25. #endif
  26. /*    #include <ConditionalMacros.h>                                */
  27.  
  28. #ifndef __EVENTS__
  29. #include <Events.h>
  30. #endif
  31.  
  32. #ifndef __QUICKDRAW__
  33. #include <Quickdraw.h>
  34. #endif
  35.  
  36. #ifndef __QDOFFSCREEN__
  37. #include <QDOffscreen.h>
  38. #endif
  39.  
  40. #ifndef __DISPLAYS__
  41. #include <Displays.h>
  42. #endif
  43.  
  44.  
  45. #if GENERATINGPOWERPC
  46.  
  47. #ifdef __cplusplus
  48. extern "C" {
  49. #endif
  50.  
  51. #if PRAGMA_ALIGN_SUPPORTED
  52. #pragma options align=power
  53. #endif
  54.  
  55. /*
  56. ********************************************************************************
  57. ** error/warning codes
  58. ********************************************************************************
  59. */
  60. enum {
  61.     kDSpNotInitializedErr                = -30440L,
  62.     kDSpSystemSWTooOldErr                = -30441L,
  63.     kDSpInvalidContextErr                = -30442L,
  64.     kDSpInvalidAttributesErr            = -30443L,
  65.     kDSpContextAlreadyReservedErr        = -30444L,
  66.     kDSpContextNotReservedErr            = -30445L,
  67.     kDSpContextNotFoundErr                = -30446L,
  68.     kDSpFrameRateNotReadyErr            = -30447L,
  69.     kDSpConfirmSwitchWarning            = -30448L,
  70.     kDSpInternalErr                        = -30449L
  71. };
  72.  
  73. /*
  74. ********************************************************************************
  75. ** constants
  76. ********************************************************************************
  77. */
  78. typedef UInt32 DSpDepthMask;
  79. enum {
  80.     kDSpDepthMask_1        = 1U<<0,
  81.     kDSpDepthMask_2        = 1U<<1,
  82.     kDSpDepthMask_4        = 1U<<2,
  83.     kDSpDepthMask_8        = 1U<<3,
  84.     kDSpDepthMask_16    = 1U<<4,
  85.     kDSpDepthMask_32    = 1U<<5,
  86.     kDSpDepthMask_All    = ~0U
  87. };
  88.  
  89. typedef UInt32 DSpColorNeeds;
  90. enum {
  91.     kDSpColorNeeds_DontCare    = 0L,
  92.     kDSpColorNeeds_Request    = 1L,
  93.     kDSpColorNeeds_Require    = 2L
  94. };
  95.  
  96. typedef UInt32 DSpContextState;
  97. enum {
  98.     kDSpContextState_Active        = 0L,
  99.     kDSpContextState_Paused        = 1L,
  100.     kDSpContextState_Inactive    = 2L
  101. };
  102.  
  103. typedef UInt32 DSpContextOption;
  104. enum {
  105.     kDSpContextOption_QD3DAccel        = 1U<<0,
  106.     kDSpContextOption_PageFlip        = 1U<<1,
  107.     kDSpContextOption_DontSyncVBL    = 1U<<2
  108. };
  109.  
  110. typedef UInt32 DSpBufferKind;
  111. enum {
  112.     kDSpBufferKind_Normal    = 0U
  113. };
  114.  
  115. /* buffer scaling is not implemented in 1.0 */
  116. typedef UInt32 DSpBufferScale;
  117. enum {
  118.     kDSpBufferScale_1                = 0x00000001U,
  119.     kDSpBufferScale_2                = 0x00000002U,
  120.     kDSpBufferScale_2Interpolate    = 0x80000002U,
  121.     kDSpBufferScale_3                = 0x00000003U,
  122.     kDSpBufferScale_3Interpolate    = 0x80000003U,
  123.     kDSpBufferScale_4                = 0x00000004U,
  124.     kDSpBufferScale_4Interpolate    = 0x80000004U
  125. };
  126.  
  127. /*
  128. ********************************************************************************
  129. ** data types
  130. ********************************************************************************
  131. */
  132. typedef struct DSpAltBufferPrivate *DSpAltBufferReference;
  133. typedef struct DSpContextPrivate *DSpContextReference;
  134.  
  135. #define kDSpEveryContext ((DSpContextReference)NULL)
  136.  
  137. typedef Boolean (*DSpEventProcPtr)( EventRecord *inEvent );
  138. typedef Boolean (*DSpCallbackProcPtr)( DSpContextReference inContext,
  139.             void *inRefCon );
  140.  
  141. struct DSpContextAttributes {
  142.     Fixed                frequency;
  143.     UInt32                displayWidth;
  144.     UInt32                displayHeight;
  145.     UInt32                reserved1;
  146.     UInt32                reserved2;
  147.     UInt32                colorNeeds;
  148.     CTabHandle            colorTable;
  149.     OptionBits            contextOptions;
  150.     OptionBits            backBufferDepthMask;
  151.     OptionBits            displayDepthMask;
  152.     UInt32                backBufferBestDepth;
  153.     UInt32                displayBestDepth;
  154.     UInt32                pageCount;
  155.     Boolean                gameMustConfirmSwitch;
  156.     UInt32                reserved3[4];
  157. };
  158. typedef struct DSpContextAttributes DSpContextAttributes;
  159. typedef struct DSpContextAttributes *DSpContextAttributesPtr;
  160.  
  161. /*
  162. ********************************************************************************
  163. ** function prototypes
  164. ********************************************************************************
  165. */
  166.  
  167. /*
  168. ** global operations
  169. */
  170. OSStatus DSpStartup( void );
  171. OSStatus DSpShutdown( void );
  172.  
  173. OSStatus DSpGetFirstContext( DisplayIDType inDisplayID,
  174.             DSpContextReference *outContext );
  175. OSStatus DSpGetNextContext( DSpContextReference inCurrentContext,
  176.             DSpContextReference *outContext );
  177.  
  178. OSStatus DSpFindBestContext(
  179.             DSpContextAttributesPtr inDesiredAttributes,
  180.             DSpContextReference *outContext );
  181.  
  182. OSStatus DSpCanUserSelectContext(
  183.             DSpContextAttributesPtr inDesiredAttributes,
  184.             Boolean *outUserCanSelectContext );
  185. OSStatus DSpUserSelectContext(
  186.             DSpContextAttributesPtr inDesiredAttributes,
  187.             DisplayIDType inDialogDisplayLocation, DSpEventProcPtr inEventProc,
  188.             DSpContextReference *outContext );
  189.  
  190. OSStatus DSpProcessEvent( EventRecord *inEvent, Boolean *outEventWasProcessed );
  191.  
  192. OSStatus DSpSetBlankingColor( const RGBColor *inRGBColor );
  193.  
  194. OSStatus DSpSetDebugMode( Boolean inDebugMode );
  195.  
  196. OSStatus DSpFindContextFromPoint( Point inGlobalPoint,
  197.             DSpContextReference *outContext );
  198.  
  199. OSStatus DSpGetMouse( Point *outGlobalPoint );
  200.  
  201. /*
  202. ** alternate buffer operations
  203. */
  204. OSStatus DSpAltBuffer_New( DSpContextReference inContext, Boolean inVRAMBuffer,
  205.             UInt32 inReserved, DSpAltBufferReference *outAltBuffer );
  206. OSStatus DSpAltBuffer_Dispose( DSpAltBufferReference inAltBuffer );
  207. OSStatus DSpAltBuffer_InvalRect( DSpAltBufferReference inAltBuffer,
  208.             const Rect *inInvalidRect );
  209. OSStatus DSpAltBuffer_GetCGrafPtr( DSpAltBufferReference inAltBuffer,
  210.             DSpBufferKind inBufferKind, CGrafPtr *outCGrafPtr,
  211.             GDHandle *outGDevice );
  212.  
  213. /*
  214. ** context operations
  215. */
  216.  
  217. /* general */
  218. OSStatus DSpContext_GetAttributes( DSpContextReference inContext,
  219.             DSpContextAttributesPtr outAttributes );
  220.  
  221. OSStatus DSpContext_Reserve( DSpContextReference inContext,
  222.             DSpContextAttributesPtr inDesiredAttributes );
  223. OSStatus DSpContext_Release( DSpContextReference inContext );
  224.  
  225. OSStatus DSpContext_GetDisplayID( DSpContextReference inContext,
  226.             DisplayIDType *outDisplayID );
  227.  
  228. OSStatus DSpContext_GlobalToLocal( DSpContextReference inContext,
  229.             Point *ioPoint );
  230. OSStatus DSpContext_LocalToGlobal( DSpContextReference inContext,
  231.             Point *ioPoint );
  232.  
  233. OSStatus DSpContext_SetVBLProc( DSpContextReference inContext,
  234.             DSpCallbackProcPtr inProcPtr, void *inRefCon );
  235.  
  236. OSStatus DSpContext_GetFlattenedSize( DSpContextReference inContext,
  237.             UInt32 *outFlatContextSize );
  238. OSStatus DSpContext_Flatten( DSpContextReference inContext,
  239.             void *outFlatContext );
  240. OSStatus DSpContext_Restore( void *inFlatContext,
  241.             DSpContextReference *outRestoredContext );
  242.  
  243. OSStatus DSpContext_GetMonitorFrequency( DSpContextReference inContext,
  244.             Fixed *outFrequency );
  245. OSStatus DSpContext_SetMaxFrameRate( DSpContextReference inContext,
  246.             UInt32 inMaxFPS );
  247. OSStatus DSpContext_GetMaxFrameRate( DSpContextReference inContext,
  248.             UInt32 *outMaxFPS );
  249.  
  250. OSStatus DSpContext_SetState( DSpContextReference inContext,
  251.             DSpContextState inState );
  252. OSStatus DSpContext_GetState( DSpContextReference inContext,
  253.             DSpContextState *outState );
  254.  
  255. OSStatus DSpContext_IsBusy( DSpContextReference inContext,
  256.             Boolean *outBusyFlag );
  257.  
  258. /* dirty rectangles */
  259. OSStatus DSpContext_SetDirtyRectGridSize( DSpContextReference inContext,
  260.             UInt32 inCellPixelWidth, UInt32 inCellPixelHeight );
  261. OSStatus DSpContext_GetDirtyRectGridSize( DSpContextReference inContext,
  262.             UInt32 *outCellPixelWidth, UInt32 *outCellPixelHeight );
  263. OSStatus DSpContext_GetDirtyRectGridUnits( DSpContextReference inContext,
  264.             UInt32 *outCellPixelWidth, UInt32 *outCellPixelHeight );
  265. OSStatus DSpContext_InvalBackBufferRect( DSpContextReference inContext,
  266.             const Rect *inRect );
  267.  
  268. /* underlays */
  269. OSStatus DSpContext_SetUnderlayAltBuffer( DSpContextReference inContext,
  270.             DSpAltBufferReference inNewUnderlay );
  271. OSStatus DSpContext_GetUnderlayAltBuffer( DSpContextReference inContext,
  272.             DSpAltBufferReference *outUnderlay );
  273.  
  274. /* gamma */
  275. OSStatus DSpContext_FadeGammaOut( DSpContextReference inContext,
  276.             RGBColor *inZeroIntensityColor );
  277. OSStatus DSpContext_FadeGammaIn( DSpContextReference inContext,
  278.             RGBColor *inZeroIntensityColor );
  279. OSStatus DSpContext_FadeGamma( DSpContextReference inContext,
  280.             SInt32 inPercentOfOriginalIntensity,
  281.             RGBColor *inZeroIntensityColor );
  282.  
  283. /* buffering */
  284. OSStatus DSpContext_SwapBuffers( DSpContextReference inContext,
  285.             DSpCallbackProcPtr inBusyProc, void *inUserRefCon );
  286. OSStatus DSpContext_GetBackBuffer( DSpContextReference inContext,
  287.             DSpBufferKind inBufferKind, CGrafPtr *outBackBuffer );
  288.  
  289. /* clut operations */
  290. OSStatus DSpContext_SetCLUTEntries( DSpContextReference inContext,
  291.             const ColorSpec *inEntries, UInt16 inStartingEntry,
  292.             UInt16 inEntryCount );
  293. OSStatus DSpContext_GetCLUTEntries( DSpContextReference inContext,
  294.             ColorSpec *outEntries, UInt16 inStartingEntry,
  295.             UInt16 inEntryCount );
  296.             
  297. #ifdef __cplusplus
  298. }
  299. #endif
  300.  
  301. /*
  302. ********************************************************************************
  303. ** unimplemented functions
  304. ********************************************************************************
  305. */
  306.  
  307. /*
  308. ** These functions and associated items were slated to make it into the
  309. ** 1.0 release of DrawSprocket, but didn't make it.
  310. */
  311. #if 0
  312.  
  313. /* alt buffer */
  314. OSStatus DSpAltBuffer_RebuildTransparencyMask(
  315.             DSpAltBufferReference inAltBuffer, UInt32 inTransparencyValue );
  316.  
  317. /* pixel scaling */
  318. OSStatus DSpContext_SetScale( DSpContextReference inContext,
  319.             DSpBufferScale inScale );
  320. OSStatus DSpContext_GetScale( DSpContextReference inContext,
  321.             DSpBufferScale *outScale );
  322.  
  323. /* overlays */
  324. OSStatus DSpContext_SetOverlayAltBuffer( DSpContextReference inContext,
  325.             DSpAltBufferReference inNewOverlay );
  326. OSStatus DSpContext_GetOverlayAltBuffer( DSpContextReference inContext,
  327.             DSpAltBufferReference *outOverlay );
  328.             
  329. #endif
  330.  
  331.  
  332. #if PRAGMA_ALIGN_SUPPORTED
  333. #pragma options align=reset
  334. #endif
  335.  
  336. #endif /* GENERATINGPOWERPC */
  337. #endif /* __DRAWSPROCKET__ */
  338.